const Koa = require("koa");
const path = require("path");
const logger = require("koa-logger");//产生日志记录
const onerror = require("koa-onerror");//错误链接和转换显示功能
const serve = require("koa-static");
const router = require("./router");

const koaBody = require("koa-body");
const session = require("koa-session");


const app = new Koa();
app.use(logger());//日志：记录开发中所有的操作流程，当开发出现错误时候，可以快速完成定位以及触发错误的源头和执行过程
onerror(app);//错误显示转换


//配置静态资源目录，将public作为服务器的根目录
let staticPath = path.join(__dirname, "./public/");
app.use(serve(staticPath));

app.keys = ["itany-koa"];
const CONFIG = {
    key: 'sessionId', //cookies中的key的属性名

    maxAge: 86400000,//cookie记录的数据有效期，默认值为1天，单位是ms
};


app.use(session(CONFIG, app));



app.use(koaBody({
    multipart: true,//支持文件上传
    formidable: {
        uploadDir: path.join(__dirname, "./public/upload"),//设置上传文件由二进制转换成文件后的服务器存放目录，文件存储时候会完成重新命名操作
        keepExtensions: true//设置保留上传文件类型的后缀，默认false
    }
}));

/* 
router是路由对象，用于提供定义时地址和回调函数之间的对应关系
router完成关系定义后，由router.routes()方法指向完成路由表的生成
    路由表->一段由js的路由和方法对应的判断逻辑 */


app.use(router.ajaxRouter.routes());
app.use(router.jqueryRouter.routes());
app.use(router.corsRouter.routes());

app.listen(3000);